package com.rmb.mapper;

import com.rmb.entity.EtlDataEngine;
import com.rmb.entity.EtlDataEngineVoResult;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * (EtlDataEngine)表数据库访问层
 *
 * @author makejava
 * @since 2021-01-13 10:24:40
 */
@Mapper
public interface EtlDataEngineMapper {

    /**
     *  查询所有
     *   模糊
     * @param page 查询起始位置
     * @param size 查询条数
     * @param engineName 引擎名称
     * @param engineTypeId 引擎ID
     * @param codeType 类型
     * @return selectEtlEngine
     */
    List<EtlDataEngineVoResult> selectEtlEngine(@Param("page") int page,
                                                @Param("size") int size,
                                                @Param("engineName") String engineName,
                                                @Param("engineTypeId") String engineTypeId,
                                                @Param("codeType") String codeType);

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    EtlDataEngine queryById(Long id);

    /**
     * 查询指定行数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    List<EtlDataEngine> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit);


    /**
     * 通过实体作为筛选条件查询
     *
     * @param etlDataEngine 实例对象
     * @return 对象列表
     */
    List<EtlDataEngine> queryAll(EtlDataEngine etlDataEngine);

    /**
     * 新增数据
     *
     * @param etlDataEngine 实例对象
     * @return 影响行数
     */
    int insert(EtlDataEngine etlDataEngine);

    /**
     * 批量新增数据（MyBatis原生foreach方法）
     *
     * @param entities List<EtlDataEngine> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(@Param("entities") List<EtlDataEngine> entities);

    /**
     * 批量新增或按主键更新数据（MyBatis原生foreach方法）
     *
     * @param entities List<EtlDataEngine> 实例对象列表
     * @return 影响行数
     */
    int insertOrUpdateBatch(@Param("entities") List<EtlDataEngine> entities);

    /**
     * 修改数据
     *
     * @param etlDataEngine 实例对象
     * @return 影响行数
     */
    int update(EtlDataEngine etlDataEngine);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(Long id);

    /**
     * 根据函数名请求数据
     * @param clName 函数名
     * @return findByClName
     */
    EtlDataEngine findByClName(@Param("clName") String clName);

    /**
     * 根据引擎名称请求数据
     * @param engineName 引擎名称
     * @return findByEngineName
     */
    EtlDataEngine findByEngineName(@Param("engineName") String engineName);

    /**
     * 根据ID
     * @param id id
     * @return getEngineId
     */
    EtlDataEngine getEngineId(Long id);

    /**
     * 动态编译
     * @param etlDataEngine 数据代码
     * @return updateCompile
     */
    boolean updateCompile(EtlDataEngine etlDataEngine);

    /**
     * 查询引擎名称条数
     * @param engineName 引擎名称
     * @return selectNum
     */
    int selectNum(@Param("engineName") String engineName);

    /**
     * 根据ID回显
     * @param id 数据引擎ID
     * @return 数据引擎
     */
    EtlDataEngine findById(@Param("id") Long id);

    /**
     * 修改引擎代码
     * @param etlDataEngine 引擎数据
     * @return 修改结果
     */
    int compileJava(EtlDataEngine etlDataEngine);

    /**
     * 检查是否存在
     * @param clName 类名
     * @param engineName 引擎名称
     * @return 对象
     */
    EtlDataEngine classAndEngine(@Param("clName") String clName, @Param("engineName") String engineName);
}